var readline = require('readline-sync')
readline.setDefaultOptions({ prompt: '' })
var readline = readline.prompt
let t = parseInt(readline()) // 读出这个t 代表祭个族谱
let treeArr = []
for (let i = 0; i < t; i++) {
  let arr = readline().split(' ') // 得出这个族谱
  function toArr (arr) {
    let childArr = []
    for (let j = 1; j < arr.length; j++) {
      let obj = {}
      obj.name = arr[j]
      obj.parent = arr[j - 1]
      childArr.push(obj)
    }
    return childArr
  }
  treeArr.push(...toArr(arr))
}
let n = parseInt(readline()) // 读出第几代
function arrToTree (data) {
  let tree = []
  if (!Array.isArray(data)) {
    return tree
  }
  // 将数组转换成对象（键值对），将ID作为属性名，原来的数组里的对象作为属性值
  let map = {}
  data.forEach(item => {
    map[item.name] = item
  })
  // 通过对象的属性名（parent）来找到父级节点，将存到map里的对象取出来放到父级节点的childere数组中
  data.forEach(item => {
    let parent = map[item.parent]

    if (parent) {
      ; (parent.children || (parent.children = [])).push(item)
    } else {
      tree.push(item)
    }
  })
  return tree
}
let tree = arrToTree(treeArr) // 得到这棵树  
let firstParent = tree[0].parent // 这个的祖先
let obj1 = {}
obj1.name = firstParent
obj1.children = []
for (let i = 0; i < tree.length; i++) {
  obj1.children.push(tree[i])
}
console.log(obj1.name) // 先输出这个的祖先 // 算是得到了一棵树
// 然后层序遍历得到第n代有多少人
let queue = []
queue.push(obj1) // 先放入这个祖先
let count = 0 // 第几层
let flag = true
while (queue.length) { // 当队列存在
  let curLever = [] // 统计这一层的个数
  let len = queue.length // 获得这个的长度
  count++ // 第几代
  for (let i = 0; i < len; i++) {
    let node = queue.shift() // 弹出
    curLever.push(node) // 放入这个节点
    let children = node.children
    children && children.forEach((child) => {
      queue.push(child)
    })
  }
  if (count === n) { // 如果相等的话
    console.log(curLever.length); // 就打印这个的长度
    flag = false
    break // 退出这个循环
  }
}
if (flag) {
  console.log(0);
}
// var levelOrder = function (root) {
//   let res = []
//   let queue = []
//   if (!root) return res
//   queue.push(root)
//   while (queue.length) {
//     let curLever = []
//     let len = queue.length
//     for (let i = 0; i < len; i++) {
//       let node = queue.shift()
//       curLever.push(node.val)
//       let children = node.children
//       children.forEach((child) => {
//         queue.push(child)
//       })
//     }
//     res.push(curLever)
//   }
//   return res
// };
